Computers have become highly integrated in the workforce, in the home, in mobile devices, and many other places. Computers can process massive amounts of information quickly and efficiently. Software applications designed to run on computer systems allow users to perform a wide variety of functions including business applications, schoolwork, entertainment and more. Software applications are often designed to perform specific tasks, such as word processor applications for drafting documents, or email programs for sending, receiving and organizing email.
In many cases, software applications are designed to interact with other software applications or other computer systems. For example, computer systems may be configured to communicate with each other using a chat or email program. Such communications may occur synchronously or asynchronously, depending on the type of program and upon its communication requirements.
Typically, when applications are configured to communicate with other applications in an asynchronous manner, one or more of the computer systems on the network acts as a message queuing system. Message queuing systems are configured to receive messages from various users or applications and forward those messages to the destination node at a later point in time. In such networks, nodes typically come online and go offline on an unpredictable basis. Accordingly, a message queue may attempt to forward a queued message to a node that is no longer online. Moreover, when the node comes back online, the node may have a different network address.
Some message queuing networks implement a resending protocol that automatically attempts to reconnect to a node that has gone offline at given intervals. Typically, these intervals become more spread out as time passes and the connection is not re-established. If a node comes online during such a waiting period, communication with that node will not be re-established until the waiting period has expired.